// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Resource Views API Version v1beta1
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://developers.google.com/compute/'>Resource Views API</a>
 *      <tr><th>API Version<td>v1beta1
 *      <tr><th>API Rev<td>20160512 (497)
 *      <tr><th>API Docs
 *          <td><a href='https://developers.google.com/compute/'>
 *              https://developers.google.com/compute/</a>
 *      <tr><th>Discovery Name<td>resourceviews
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Resource Views API can be found at
 * <a href='https://developers.google.com/compute/'>https://developers.google.com/compute/</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.Resourceviews.v1beta1
{
    /// <summary>The Resourceviews Service.</summary>
    public class ResourceviewsService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v1beta1";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public ResourceviewsService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public ResourceviewsService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            regionViews = new RegionViewsResource(this);
            zoneViews = new ZoneViewsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "resourceviews"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/resourceviews/v1beta1/projects/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "resourceviews/v1beta1/projects/"; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Resource Views API.</summary>
        public class Scope
        {
            /// <summary>View and manage your data across Google Cloud Platform services</summary>
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

            /// <summary>View your data across Google Cloud Platform services</summary>
            public static string CloudPlatformReadOnly = "https://www.googleapis.com/auth/cloud-platform.read-only";

            /// <summary>View and manage your Google Compute Engine resources</summary>
            public static string Compute = "https://www.googleapis.com/auth/compute";

            /// <summary>View your Google Compute Engine resources</summary>
            public static string ComputeReadonly = "https://www.googleapis.com/auth/compute.readonly";

            /// <summary>View and manage your Google Cloud Platform management resources and deployment status
            /// information</summary>
            public static string NdevCloudman = "https://www.googleapis.com/auth/ndev.cloudman";

            /// <summary>View your Google Cloud Platform management resources and deployment status
            /// information</summary>
            public static string NdevCloudmanReadonly = "https://www.googleapis.com/auth/ndev.cloudman.readonly";

        }



        private readonly RegionViewsResource regionViews;

        /// <summary>Gets the RegionViews resource.</summary>
        public virtual RegionViewsResource RegionViews
        {
            get { return regionViews; }
        }

        private readonly ZoneViewsResource zoneViews;

        /// <summary>Gets the ZoneViews resource.</summary>
        public virtual ZoneViewsResource ZoneViews
        {
            get { return zoneViews; }
        }
    }

    ///<summary>A base abstract class for Resourceviews requests.</summary>
    public abstract class ResourceviewsBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new ResourceviewsBaseServiceRequest instance.</summary>
        protected ResourceviewsBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes Resourceviews parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "regionViews" collection of methods.</summary>
    public class RegionViewsResource
    {
        private const string Resource = "regionViews";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public RegionViewsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Add resources to the view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        /// <param name="resourceViewName">The name of the resource
        /// view.</param>
        public virtual AddresourcesRequest Addresources(Google.Apis.Resourceviews.v1beta1.Data.RegionViewsAddResourcesRequest body, string projectName, string region, string resourceViewName)
        {
            return new AddresourcesRequest(service, body, projectName, region, resourceViewName);
        }

        /// <summary>Add resources to the view.</summary>
        public class AddresourcesRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Addresources request.</summary>
            public AddresourcesRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.RegionViewsAddResourcesRequest body, string projectName, string region, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                ResourceViewName = resourceViewName;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.RegionViewsAddResourcesRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "addresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews/{resourceViewName}/addResources"; }
            }

            /// <summary>Initializes Addresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Delete a resource view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        /// <param name="resourceViewName">The name of the resource
        /// view.</param>
        public virtual DeleteRequest Delete(string projectName, string region, string resourceViewName)
        {
            return new DeleteRequest(service, projectName, region, resourceViewName);
        }

        /// <summary>Delete a resource view.</summary>
        public class DeleteRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, string projectName, string region, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews/{resourceViewName}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Get the information of a resource view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        /// <param name="resourceViewName">The name of the resource
        /// view.</param>
        public virtual GetRequest Get(string projectName, string region, string resourceViewName)
        {
            return new GetRequest(service, projectName, region, resourceViewName);
        }

        /// <summary>Get the information of a resource view.</summary>
        public class GetRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.ResourceView>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string projectName, string region, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews/{resourceViewName}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Create a resource view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        public virtual InsertRequest Insert(Google.Apis.Resourceviews.v1beta1.Data.ResourceView body, string projectName, string region)
        {
            return new InsertRequest(service, body, projectName, region);
        }

        /// <summary>Create a resource view.</summary>
        public class InsertRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.RegionViewsInsertResponse>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.ResourceView body, string projectName, string region)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.ResourceView Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>List resource views.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        public virtual ListRequest List(string projectName, string region)
        {
            return new ListRequest(service, projectName, region);
        }

        /// <summary>List resource views.</summary>
        public class ListRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.RegionViewsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string projectName, string region)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default:
            /// 5000)</summary>
            /// [default: 5000]
            /// [minimum: 0]
            /// [maximum: 5000]
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> MaxResults { get; set; }

            /// <summary>Specifies a nextPageToken returned by a previous list request. This token can be used to
            /// request the next page of results from a previous list request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = "5000",
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>List the resources in the view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        /// <param name="resourceViewName">The name of the resource
        /// view.</param>
        public virtual ListresourcesRequest Listresources(string projectName, string region, string resourceViewName)
        {
            return new ListresourcesRequest(service, projectName, region, resourceViewName);
        }

        /// <summary>List the resources in the view.</summary>
        public class ListresourcesRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.RegionViewsListResourcesResponse>
        {
            /// <summary>Constructs a new Listresources request.</summary>
            public ListresourcesRequest(Google.Apis.Services.IClientService service, string projectName, string region, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }

            /// <summary>Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default:
            /// 5000)</summary>
            /// [default: 5000]
            /// [minimum: 0]
            /// [maximum: 5000]
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> MaxResults { get; set; }

            /// <summary>Specifies a nextPageToken returned by a previous list request. This token can be used to
            /// request the next page of results from a previous list request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "listresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews/{resourceViewName}/resources"; }
            }

            /// <summary>Initializes Listresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = "5000",
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Remove resources from the view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="region">The region
        /// name of the resource view.</param>
        /// <param name="resourceViewName">The name of the resource
        /// view.</param>
        public virtual RemoveresourcesRequest Removeresources(Google.Apis.Resourceviews.v1beta1.Data.RegionViewsRemoveResourcesRequest body, string projectName, string region, string resourceViewName)
        {
            return new RemoveresourcesRequest(service, body, projectName, region, resourceViewName);
        }

        /// <summary>Remove resources from the view.</summary>
        public class RemoveresourcesRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Removeresources request.</summary>
            public RemoveresourcesRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.RegionViewsRemoveResourcesRequest body, string projectName, string region, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Region = region;
                ResourceViewName = resourceViewName;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The region name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("region", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Region { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.RegionViewsRemoveResourcesRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "removeresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/regions/{region}/resourceViews/{resourceViewName}/removeResources"; }
            }

            /// <summary>Initializes Removeresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "region", new Google.Apis.Discovery.Parameter
                    {
                        Name = "region",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "zoneViews" collection of methods.</summary>
    public class ZoneViewsResource
    {
        private const string Resource = "zoneViews";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ZoneViewsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Add resources to the view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        /// <param name="resourceViewName">The name of the resource view.</param>
        public virtual AddresourcesRequest Addresources(Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsAddResourcesRequest body, string projectName, string zone, string resourceViewName)
        {
            return new AddresourcesRequest(service, body, projectName, zone, resourceViewName);
        }

        /// <summary>Add resources to the view.</summary>
        public class AddresourcesRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Addresources request.</summary>
            public AddresourcesRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsAddResourcesRequest body, string projectName, string zone, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                ResourceViewName = resourceViewName;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsAddResourcesRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "addresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews/{resourceViewName}/addResources"; }
            }

            /// <summary>Initializes Addresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Delete a resource view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        /// <param name="resourceViewName">The name of the resource view.</param>
        public virtual DeleteRequest Delete(string projectName, string zone, string resourceViewName)
        {
            return new DeleteRequest(service, projectName, zone, resourceViewName);
        }

        /// <summary>Delete a resource view.</summary>
        public class DeleteRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, string projectName, string zone, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews/{resourceViewName}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Get the information of a zonal resource view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        /// <param name="resourceViewName">The name of the resource view.</param>
        public virtual GetRequest Get(string projectName, string zone, string resourceViewName)
        {
            return new GetRequest(service, projectName, zone, resourceViewName);
        }

        /// <summary>Get the information of a zonal resource view.</summary>
        public class GetRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.ResourceView>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string projectName, string zone, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews/{resourceViewName}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Create a resource view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        public virtual InsertRequest Insert(Google.Apis.Resourceviews.v1beta1.Data.ResourceView body, string projectName, string zone)
        {
            return new InsertRequest(service, body, projectName, zone);
        }

        /// <summary>Create a resource view.</summary>
        public class InsertRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsInsertResponse>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.ResourceView body, string projectName, string zone)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.ResourceView Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>List resource views.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        public virtual ListRequest List(string projectName, string zone)
        {
            return new ListRequest(service, projectName, zone);
        }

        /// <summary>List resource views.</summary>
        public class ListRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string projectName, string zone)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default:
            /// 5000)</summary>
            /// [default: 5000]
            /// [minimum: 0]
            /// [maximum: 5000]
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> MaxResults { get; set; }

            /// <summary>Specifies a nextPageToken returned by a previous list request. This token can be used to
            /// request the next page of results from a previous list request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = "5000",
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>List the resources of the resource view.</summary>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        /// <param name="resourceViewName">The name of the resource view.</param>
        public virtual ListresourcesRequest Listresources(string projectName, string zone, string resourceViewName)
        {
            return new ListresourcesRequest(service, projectName, zone, resourceViewName);
        }

        /// <summary>List the resources of the resource view.</summary>
        public class ListresourcesRequest : ResourceviewsBaseServiceRequest<Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsListResourcesResponse>
        {
            /// <summary>Constructs a new Listresources request.</summary>
            public ListresourcesRequest(Google.Apis.Services.IClientService service, string projectName, string zone, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                ResourceViewName = resourceViewName;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }

            /// <summary>Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default:
            /// 5000)</summary>
            /// [default: 5000]
            /// [minimum: 0]
            /// [maximum: 5000]
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<int> MaxResults { get; set; }

            /// <summary>Specifies a nextPageToken returned by a previous list request. This token can be used to
            /// request the next page of results from a previous list request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "listresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews/{resourceViewName}/resources"; }
            }

            /// <summary>Initializes Listresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = "5000",
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Remove resources from the view.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="projectName">The project name of the resource view.</param>
        /// <param name="zone">The zone name of
        /// the resource view.</param>
        /// <param name="resourceViewName">The name of the resource view.</param>
        public virtual RemoveresourcesRequest Removeresources(Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsRemoveResourcesRequest body, string projectName, string zone, string resourceViewName)
        {
            return new RemoveresourcesRequest(service, body, projectName, zone, resourceViewName);
        }

        /// <summary>Remove resources from the view.</summary>
        public class RemoveresourcesRequest : ResourceviewsBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Removeresources request.</summary>
            public RemoveresourcesRequest(Google.Apis.Services.IClientService service, Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsRemoveResourcesRequest body, string projectName, string zone, string resourceViewName)
                : base(service)
            {
                ProjectName = projectName;
                Zone = zone;
                ResourceViewName = resourceViewName;
                Body = body;
                InitParameters();
            }


            /// <summary>The project name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProjectName { get; private set; }

            /// <summary>The zone name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("zone", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Zone { get; private set; }

            /// <summary>The name of the resource view.</summary>
            [Google.Apis.Util.RequestParameterAttribute("resourceViewName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ResourceViewName { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Resourceviews.v1beta1.Data.ZoneViewsRemoveResourcesRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "removeresources"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{projectName}/zones/{zone}/resourceViews/{resourceViewName}/removeResources"; }
            }

            /// <summary>Initializes Removeresources parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "projectName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "zone", new Google.Apis.Discovery.Parameter
                    {
                        Name = "zone",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "resourceViewName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resourceViewName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }
}

namespace Google.Apis.Resourceviews.v1beta1.Data
{    

    /// <summary>The Label to be applied to the resource views.</summary>
    public class Label : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Key of the label.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("key")]
        public virtual string Key { get; set; } 

        /// <summary>Value of the label.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request to add resources to the resource view.</summary>
    public class RegionViewsAddResourcesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The list of resources to be added.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<string> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to a resource view insert request.</summary>
    public class RegionViewsInsertResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The resource view object inserted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resource")]
        public virtual ResourceView Resource { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to the list resource request.</summary>
    public class RegionViewsListResourcesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The resources in the view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("members")]
        public virtual System.Collections.Generic.IList<string> Members { get; set; } 

        /// <summary>A token used for pagination.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to the list resource view request.</summary>
    public class RegionViewsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A token used for pagination.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The list of resource views that meet the criteria.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resourceViews")]
        public virtual System.Collections.Generic.IList<ResourceView> ResourceViews { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request to remove resources from the resource view.</summary>
    public class RegionViewsRemoveResourcesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The list of resources to be removed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<string> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The resource view object.</summary>
    public class ResourceView : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The creation time of the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationTime")]
        public virtual string CreationTime { get; set; } 

        /// <summary>The detailed description of the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        /// <summary>[Output Only] The ID of the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Type of the resource.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The labels for events.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IList<Label> Labels { get; set; } 

        /// <summary>The last modified time of the view. Not supported yet.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastModified")]
        public virtual string LastModified { get; set; } 

        /// <summary>A list of all resources in the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("members")]
        public virtual System.Collections.Generic.IList<string> Members { get; set; } 

        /// <summary>The name of the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The total number of resources in the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numMembers")]
        public virtual System.Nullable<long> NumMembers { get; set; } 

        /// <summary>[Output Only] A self-link to the resource view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("selfLink")]
        public virtual string SelfLink { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request to add resources to the resource view.</summary>
    public class ZoneViewsAddResourcesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The list of resources to be added.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<string> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to an insert request.</summary>
    public class ZoneViewsInsertResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The resource view object that has been inserted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resource")]
        public virtual ResourceView Resource { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to a list resource request.</summary>
    public class ZoneViewsListResourcesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The full URL of resources in the view.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("members")]
        public virtual System.Collections.Generic.IList<string> Members { get; set; } 

        /// <summary>A token used for pagination.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response to a list request.</summary>
    public class ZoneViewsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A token used for pagination.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The result that contains all resource views that meet the criteria.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resourceViews")]
        public virtual System.Collections.Generic.IList<ResourceView> ResourceViews { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The request to remove resources from the resource view.</summary>
    public class ZoneViewsRemoveResourcesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The list of resources to be removed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<string> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
